import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiField;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiJavaFile;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Schema;

/**
 * Created by ma on 2015/7/27.
 */
public class WriteTool {


    public WriteTool() {
    }


//     public void initBean(Schema schema, String tableName, PsiField[] fields) {
//        Entity userBean = schema.addEntity(tableName);
//        userBean.setTableName(tableName);
//        userBean.setSkipGeneration(true);
//        for (PsiField field : fields) {
//
//            if (field.getName().equals("ID") || field.getName().equals("Id") || field.getName().equals("id")) {
//                String type = field.getType().toString();//得到此属性的类型
//                if (type.endsWith("String")) {
//                    userBean.addStringProperty(field.getName()).primaryKey().index();
//
//                } else if (type.endsWith("int") || type.endsWith("Integer")) {
//                    userBean.addIntProperty(field.getName()).primaryKey().index();
//
//
//                } else if (type.endsWith("double") || type.endsWith("Double")) {
//                    userBean.addDoubleProperty(field.getName()).primaryKey().index();
//                    ;
//                } else if (type.endsWith("float") || type.endsWith("Float")) {
//                    userBean.addFloatProperty(field.getName()).primaryKey().index();
//                    ;
//                } else if (type.endsWith("Date")) {
//                    userBean.addDateProperty(field.getName()).primaryKey().index();
//                    ;
//                } else if (type.endsWith("Long") || type.endsWith("long")) {
//                    userBean.addLongProperty(field.getName()).primaryKey().index();
//                    ;
//                } else if (type.endsWith("boolean") || type.endsWith("Boolean")) {
//                    userBean.addBooleanProperty(field.getName()).primaryKey().index();
//                    ;
//                } else if (type.endsWith("byte") || type.endsWith("Byte")) {
//                    userBean.addByteProperty(field.getName()).primaryKey().index();
//                    ;
//                } else if (type.endsWith("byte[]") || type.endsWith("Byte[]")) {
//                    userBean.addByteProperty(field.getName()).primaryKey().index();
//                    ;
//                }
//
//            } else {
//                String type = field.getType().toString();//得到此属性的类型
//                if (type.endsWith("String")) {
//                    userBean.addStringProperty(field.getName());
//                    //给属性设值
//                } else if (type.endsWith("int") || type.endsWith("Integer")) {
//                    userBean.addIntProperty(field.getName());
//                    //给属性设值
//
//                } else if (type.endsWith("double") || type.endsWith("Double")) {
//                    userBean.addDoubleProperty(field.getName());
//                } else if (type.endsWith("float") || type.endsWith("Float")) {
//                    userBean.addFloatProperty(field.getName());
//                } else if (type.endsWith("Date")) {
//                    userBean.addDateProperty(field.getName());
//                } else if (type.endsWith("Long") || type.endsWith("long")) {
//                    userBean.addLongProperty(field.getName());
//                } else if (type.endsWith("boolean") || type.endsWith("Boolean")) {
//                    userBean.addBooleanProperty(field.getName());
//                } else if (type.endsWith("byte") || type.endsWith("Byte")) {
//                    userBean.addByteProperty(field.getName());
//                } else if (type.endsWith("byte[]") || type.endsWith("Byte[]")) {
//                    userBean.addByteProperty(field.getName());
//                }
//            }
//
//
//        }
//
//
//    }


    public void initBean(Schema schema, PsiFile file) {

        PsiJavaFile f = (PsiJavaFile) file;
        //第一个类，
        PsiClass psiClass = f.getClasses()[0];

        PsiField[] fields = psiClass.getAllFields();
        Entity userBean = schema.addEntity(psiClass.getName());
        userBean.setTableName(psiClass.getName());
        userBean.setSkipGeneration(true);

        for (PsiField field : fields) {

          if (field.getText().startsWith("//主键")||field.getText().startsWith("//id")||field.getText().startsWith("//Id")||field.getText().startsWith("//ID")) {
                String type = field.getType().toString();//得到此属性的类型
                if (type.endsWith("String")) {
                    userBean.addStringProperty(field.getName()).primaryKey().index();

                } else if (type.endsWith("int") || type.endsWith("Integer")) {
                    userBean.addIntProperty(field.getName()).primaryKey().index();


                } else if (type.endsWith("double") || type.endsWith("Double")) {
                    userBean.addDoubleProperty(field.getName()).primaryKey().index();
                    ;
                } else if (type.endsWith("float") || type.endsWith("Float")) {
                    userBean.addFloatProperty(field.getName()).primaryKey().index();
                    ;
                } else if (type.endsWith("Date")) {
                    userBean.addDateProperty(field.getName()).primaryKey().index();
                    ;
                } else if (type.endsWith("Long") || type.endsWith("long")) {
                    userBean.addLongProperty(field.getName()).primaryKey().index();
                    ;
                } else if (type.endsWith("boolean") || type.endsWith("Boolean")) {
                    userBean.addBooleanProperty(field.getName()).primaryKey().index();
                    ;
                } else if (type.endsWith("byte") || type.endsWith("Byte")) {
                    userBean.addByteProperty(field.getName()).primaryKey().index();
                    ;
                } else if (type.endsWith("byte[]") || type.endsWith("Byte[]")) {
                    userBean.addByteProperty(field.getName()).primaryKey().index();
                    ;
                }

            } else {
                String type = field.getType().toString();//得到此属性的类型
                if (type.endsWith("String")) {
                    userBean.addStringProperty(field.getName());
                    //给属性设值
                } else if (type.endsWith("int") || type.endsWith("Integer")) {
                    userBean.addIntProperty(field.getName());
                    //给属性设值

                } else if (type.endsWith("double") || type.endsWith("Double")) {
                    userBean.addDoubleProperty(field.getName());
                } else if (type.endsWith("float") || type.endsWith("Float")) {
                    userBean.addFloatProperty(field.getName());
                } else if (type.endsWith("Date")) {
                    userBean.addDateProperty(field.getName());
                } else if (type.endsWith("Long") || type.endsWith("long")) {
                    userBean.addLongProperty(field.getName());
                } else if (type.endsWith("boolean") || type.endsWith("Boolean")) {
                    userBean.addBooleanProperty(field.getName());
                } else if (type.endsWith("byte") || type.endsWith("Byte")) {
                    userBean.addByteProperty(field.getName());
                } else if (type.endsWith("byte[]") || type.endsWith("Byte[]")) {
                    userBean.addByteProperty(field.getName());
                }
            }


        }


    }


}

